#ifndef FRMDEVICECONFIG_H
#define FRMDEVICECONFIG_H

#include <QWidget>
#include <QTimer> // 新增：用于超时处理
#include "frmmain.h"
#include "config.h"
#include "ui_frmdeviceconfig.h"

class frmdeviceconfig : public QWidget
{
    Q_OBJECT

public:
    explicit frmdeviceconfig(QWidget *parent = nullptr);
    ~frmdeviceconfig();

private slots:
    void on_enterSettingModeButton_clicked();
    void on_exitSettingModeButton_clicked();
    void on_sendConfigButton_clicked();
    void on_cancelButton_clicked();
    void on_saveConfigButton_clicked();
    void on_loadConfigButton_clicked();
    void onSerialConnectionChanged(bool connected);
    void onTcpConnectionChanged(bool connected);
    void onSerialDataReceived(const QString &data); // 新增：处理串口数据
    void onTcpDataReceived(const QString &data);    // 新增：处理 TCP 数据
    void onResponseTimeout();                       // 新增：处理响应超时

private:
    Ui::frmdeviceconfig *ui;
    frmmain *mainWindow;
    bool isSettingMode;
    Config config;
    bool isWaitingForNtripConfig; // 记录是否正在等待 NTRIP 配置数据
    QString lastCommand;          // 新增：记录最后发送的命令
    QTimer responseTimer;         // 新增：超时定时器

    void sendSettingModeCommand(bool enter);
    void updateMainResponse(const QString &msg);
    void enableConfigControls(bool enable);
    void resetConfigFields();
    void updateSettingModeButtonState();
    void sendNtripQueryCommand();         // 发送 NTRIP 查询指令
    void parseNtripConfigResponse(const QString &data); // 新增：解析 NTRIP 配置响应
    void startResponseTimer();            // 新增：启动响应超时定时器
};

#endif // FRMDEVICECONFIG_H